﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CsplCalculatorLib.Interface;
using CsplCalculatorLib.Model;

namespace CsplCalculatorLib
{
   public class MainCalculator
    {
        #region Private Fields
        
        private IBasicCalculator _calculator;
        private CalModel _data;

        #endregion
        
        #region Contructors

        public MainCalculator()
        {
            this._calculator = new BasicCalculator();
        }

        #endregion

        #region Properties
        
        public CalModel Data
        {
            get 
            { 
                return _data;
            }
            set 
            { 
                _data = value; 
            }
        }

        #endregion

        #region Methods 

        public int Calculate()
        {
            int result = 0;
            if (this.Data != null)
            {
                switch (this.Data.Operation)
                {
                    case "Add":
                        result = this._calculator.Add(this.Data.IntegerValue1,
                            this.Data.IntegerValue2);
                        break;
                    case "Sub":
                        result = this._calculator.Sub(this.Data.IntegerValue1,
                            this.Data.IntegerValue2);
                        break;
                    case "Mul":
                        result = this._calculator.Mul(this.Data.IntegerValue1,
                            this.Data.IntegerValue2);
                        break;
                    case "Div" :
                        result =this._calculator.Div(this.Data.IntegerValue1,
                            this.Data.IntegerValue2);
                        break;
                    
                }
                
            }
            else{
                Console.WriteLine("There is no data to be calculated!");
            }
            return result;
        }
        #endregion
    }
}
